

const cloud = require('wx-server-sdk');

cloud.init()

const db = cloud.database({ env: 'tpcwre1' })
var err = 'err1'  //缺少参数
exports.main = async (event, context) => {

  let { header, nickName, _id, openid} = event
  let { OPENID } = cloud.getWXContext()
  if(openid){
    OPENID = openid
  }
  if (!OPENID || !header || !nickName || !_id) {
    return err
  }


  var t = db.collection('microTools_fillPit')
  var data = await t.doc(_id).get()
  var roomInfo = data.data

  if (roomInfo.quotas.length < 1) {
    err = 'err2'  //坑已满
    return err
  }


  var userInfo = {
    openid: OPENID,
    header: header,
    nickName: nickName,
    quota:roomInfo.quotas.pop()
  }

  if (roomInfo.userList) {  //有用户列表
    var userList = roomInfo.userList
    var userList_stat = false
    for (var i = 0; i < userList.length; i++) {
      if (userInfo.openid == userList[i].openid) {
        userList_stat = true
      }
    }
    if (userList_stat) {
      err = 'err3'    //用户已入坑
      return err
    }
    roomInfo.userList.push(userInfo)  //将新用户追加到用户列表中
  } else {    //无用户列表 
    roomInfo.userList = [userInfo]    //用新用户生成新数组
  }


  var data = await t.doc(_id).update({  //锁定表的写入功能
    data: {
      lock: true
    }
  })
  if (!data.stats.updated) {
    err = 'err4'  //服务繁忙，请稍候再试！
    return err
  }


  var updateData = {
    quotas:roomInfo.quotas,
    userList:roomInfo.userList,
    lock:false
  }
  var ures = await t.doc(_id).update({  //锁定表的写入功能
    data: updateData
  })
  if(ures.stats.updated){
    err = 'ok';
  }else{
    err = 'err5';
  }
  return err

  // var t = db.collection('microTools_fillPit')
  // const countResult = await t.count()
  // const total = countResult.total
  // return countResult

  // return db.collection('microTools_fillPit').doc('54bac78c5ecd069200500d60173e15dd').update({
  //   data: {
  //     // 表示将 done 字段置为 true
  //     name: 'gggggg'
  //   }
  // })

  
  


  // let { quotas, userList} = event
  // if (!userList || !quotas) {
  //   return { err }
  // }
  // var data = {
  //   aa:'aaaaa',
  //   quotas: quotas,
  //   userList: userList
  // }


  // var t = db.collection('microTools_fillPit')

  // return t.add({
  //   data: {
  //     roomName: roomName,
  //     roomPwd: roomPwd,
  //     userCount: userCount,
  //     total: total,
  //     cheader: cheader,
  //     cname: cname,
  //     ctime: new Date().getTime(),
  //     stat: true,
  //     quotas: quotas
  //   }
  // })


}






  //添加数据
  // return db.collection('microTools_fillPit').add({
  //   data:{
  //     age:"18",
  //     sex:"sss3"
  //   }
  // })


  //按指定条件获取数据
  // return db.collection('microTools_fillPit').where({
  //     age:"18",
  //     sex:"sss"
  //   }).get()

  //按id查询数据
  //return db.collection('microTools_fillPit').doc('54bac78c5ecd069200500d60173e15dd').get()

  //获取表中全部数据
  //return db.collection('microTools_fillPit').get()



  //按指定条件删除数据
  // return db.collection('microTools_fillPit').where({
  //     age:"18",
  //     sex:'bbb'
  //   }).remove()



  //按指定字段和条件更改数据
  // return db.collection('microTools_fillPit').where({
  //     age:'18',
  //     sex:'bbb'
  //   })
  //     .update({
  //       data: {
  //         'name': 'llllllsssssssyyyyyyyys'
  //       }
  //     })



  //根据id更改数据
  // return db.collection('microTools_fillPit').doc('54bac78c5ecd069200500d60173e15dd').update({
  //   // data 传入需要局部更新的数据
  //   data: {
  //     // 表示将 done 字段置为 true
  //     name: 'gggggg'
  //   }
  // })










